package com.huike.clues.service;

import com.huike.clues.domain.dto.DeptListDTO;
import com.huike.clues.domain.dto.SysNewDeptDTO;
import com.huike.clues.domain.entity.SysDept;
import com.huike.clues.domain.vo.DeptsVO;
import com.huike.clues.domain.vo.RoleDeptTreeSelectVO;

import java.util.List;

/**
 * @Description DeptService
 * @Author bin
 * @Date 2023-10-15
 */
public interface DeptService {

    /**
     * 处理新增部门请求
     * @param sysDept
     */
    void insert(SysDept sysDept);

    /**
     * 处理更新部门接口
     * @param sysNewDeptDTO
     */
    void update(SysNewDeptDTO sysNewDeptDTO);

    /**
     * 处理获取部门列表接口
     * @return
     */
    List<SysDept> list(DeptListDTO deptListDTO);

    /**
     * 处理根据部门编号获取详细信息
     * @return
     */
    SysNewDeptDTO checkByDeptId(Integer deptId);

    /**
     * 处理查询部门列表（排除指定部门节点）
     * @param deptId
     * @return
     */
    List<SysDept> excludeByDeptId(Integer deptId);

    /**
     * 处理获取对应角色部门列表树
     * @param roleId
     * @return
     */
    RoleDeptTreeSelectVO roleDeptTreeselect(Integer roleId);


    /**
     * 删除部门
     * @param deptId
     */
    void deleteByDeptId(Integer deptId);

    /**
     * 处理获取部门下拉树列表
     *    处理获取部门及人员嵌用
     * @return
     */
    List<DeptsVO> treeselect();

}
